home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / tos_updt / fmcity / palcom / auto / script / flistcom.mx < prev    next >
Text File  |  1995-02-10  |  4KB  |  146 lines

  1. //--------------------------------------------------------------------------//
  2. //                        PALCOM V2.1 L10                        //
  3. //                    自動通信:フォーラム一覧取得スクリプト                    //
  4. //                                                                            //
  5. //                                        CopyRight(C) 1994/10/20                //
  6. //                                FUJITSU PERSONAL COMPUTER SYSTEMS LIMITED    //
  7. //                                        written by C-cube Soft T.Nakamura    //
  8. //--------------------------------------------------------------------------//
  9. event    @OPEN.EXTERN {
  10.     $AUTO.WAIT15 = AUTO.getWaitChar( 15 );
  11.     $AUTO.WAIT60 = AUTO.getWaitChar( 30 );
  12.     $trdId = #FALSE;
  13.     sys.global( $trdId );
  14.  
  15.     //---   フォーラム一覧に入り、トップメニューを取得する   ---//
  16.     sys.stopIntRec();
  17.     loop {
  18.         AUTO.putStr("GO FLIST\r");
  19.         $errFlg  = 1;
  20.         comtable( $a, 300 ) {
  21.             interval        { AUTO.haltCheck();  }
  22.             "GO FLIST\n"    { $errFlg = 0; exit; }
  23.         }
  24.         if( $errFlg == 0 ) {
  25.             exit;
  26.         }
  27.         AUTO.putStr("\r");
  28.         AUTO.waitPrompt( #TRUE );
  29.         continue;
  30.     }
  31.     $tmpList = [];
  32.     $inFlg   = 0;
  33.     comtable( $a, 1200 ) {
  34.         interval        { AUTO.haltCheck();        }
  35.         $AUTO.WAIT60    { AUTO.putStr("\r");    }
  36.         "FLIST\n"        { $inFlg = 1;            }
  37.         ">\w\w"        { exit;                    }
  38.         "%b%d. "        {
  39.             $str = str.replaceAll( com.getString( 0, #TRUE, #TRUE ), "\n", "");
  40.             $str = str.join([$a, $str], "" );
  41.             list.putLast( $tmpList, $str );
  42.         }
  43.     }
  44.     if( $inFlg == 0 ) {
  45.         //---   フォーラム一覧に入れなかった   ---//
  46.         $errMsg = ["フォーラム一覧に入ることが出来ませんでした。",
  47.                    "フォーラム一覧の取得を中断しました。"];
  48.         AUTO.error("フォーラム一覧の取得", $errMsg );
  49.         return;
  50.     }
  51.     if( list.size( $tmpList ) == 0 ) {
  52.         //---   メニューが無い   ---//
  53.         return;
  54.     }
  55.  
  56.     //---   TRD の初期化   ---//
  57.     $trdId = trd.init( 500 * 20, -1 );
  58.  
  59.     //---   トップメニューを一つずつに分解し、TRD ファイルに格納する   ---//
  60.     $clm       = str.match( list.get1st( $tmpList ), " 2. ", 0 );
  61.     $titleList = [];
  62.     $noList    = [];
  63.     $i         = 0;
  64.     foreach( $a, $tmpList ) {
  65.         if( str.length( $a ) < $clm + 1 ) {
  66.             $list = [$a];
  67.         } else {
  68.             $list = [str.left($a,$clm),str.right($a,str.length($a)-$clm)];
  69.         }
  70.         foreach( $b, $list ) {
  71.             $i = $i + 1;
  72.             trd.setData( $trdId, [$i, -2], 
  73.                 str.replaceAll( str.mid( $b,4,str.length($b)-4 ), " ", "" ));
  74.         }
  75.     }
  76.  
  77.     //---   続いて項目毎の一覧を取得する   ---//
  78.     AUTO.sendCommand("SET MENU OFF"); 
  79.     $j = 1;
  80.     loop {
  81.         $cmd = str.join([data.toString( $j ), "\r"], "" );
  82.         AUTO.putStr2( $cmd );
  83.         $strList = [];
  84.         comtable( $a, 0 ) {
  85.             interval        { AUTO.haltCheck();        }
  86.             $AUTO.WAIT60    { AUTO.putStr("\r");    }
  87.             "more>\w\w"        { AUTO.putStr("\r");    }
  88.             ">\w\w"        { exit;                    }
  89.             "%2b%d   "        {
  90.                 list.putLast( $strList, com.getString( 0, #TRUE, #TRUE ));
  91.             }
  92.         }
  93.  
  94.         //---   フォーラムタイトルと GO コマンド名を取り出し   ---//
  95.         //---                         TRD ファイルに出力する   ---//
  96.         $no = 1;
  97.         foreach( $str, $strList ) {
  98.             $str = str.replaceAll( $str, " ", "  " );
  99.             $cmdTop = str.matchRev( $str, "(", 0 ) + 1;
  100.             $cmdLen = str.match( $str, " ", $cmdTop );
  101.             if( $cmdLen == -1 ) {
  102.                 $cmdLen = str.match( $str, ")", $cmdTop );
  103.             }
  104.             $cmdLen = $cmdLen - $cmdTop;
  105.             $goCmd  = str.mid( $str, $cmdTop, $cmdLen );
  106.             $title  = str.left( $str, $cmdTop - 2 );
  107.             $title  = str.join( str.split( $title, " " ), " " );
  108.             trd.setData( $trdId,[$j,$no],str.join([$title,$goCmd],"\t" ));
  109.             $no = $no + 1;
  110.         }
  111.  
  112.         //---   全ての項目を廻った?   ---//
  113.         if( $j == $i ) {
  114.             exit;
  115.         }
  116.         $j = $j + 1;
  117.         AUTO.sendCommand("E");
  118.     }
  119.  
  120.     //---   TRD ファイルを出力する   ---//
  121.     $path = str.join([$$DIR.STANDARD, "PUBLIC\\FRMLIST.TRD"], "" );
  122.     if( file.exist( $path ) == #TRUE ) {
  123.         //---   既存のフォーラム一覧ファイルは削除する   ---//
  124.         file.delete( $path );
  125.     }
  126.     trd.save( $trdId, $path );
  127.  
  128.     //---   後始末   ---//
  129.     trd.end( $trdId );
  130.     $trdId = #FALSE;
  131.     return;
  132. }
  133. event    @CLOSE.EXTERN {
  134.     if( $trdId != #FALSE ) {
  135.         trd.end( $trdId );
  136.     }
  137.     sys.local( $trdId );
  138.     sys.startIntRec();
  139.     return;
  140. }
  141. event    @ERROR {
  142.     sys.startIntRec();
  143.     AUTO.fatalError();
  144.     event.mainLoop();
  145. }
  146.